//这个文件会帮我们打包packages下的模块，最终打包出js文件

// node dev.js 要打包的名字 -f 打包的格式

import minimist from "minimist";
import {resolve,dirname} from "path";
import {fileURLToPath} from "url";
import { createRequire } from "module";
import esbuild from "esbuild";

//获取命令行传递的参数
const args = minimist(process.argv.slice(2));
const __filename = fileURLToPath(import.meta.url); // 获取当前文件的绝对路径
const __dirname = dirname(__filename); // 获取当前文件所在目录的绝对路径
const require = createRequire(import.meta.url); // 创建一个 require 函数

const target = args._[0] || "reactivity"; // 获取第一个参数作为目标模块名
const format = args.f || "iife"; // 获取格式参数，默认为 cjs

console.log(target, format,require);

const entry = resolve(__dirname,`../packages/${target}/src/index.ts`) // 构建入口文件路径
const pkg = require(`../packages/${target}/package.json`)

//打包
esbuild.context({ 
    entryPoints:[entry], // 入口文件 
    outfile:resolve(__dirname,`../packages/${target}/dist/${target}.${format}.js`), // 输出文件
    bundle:true, // 打包
    platform:"browser", // 平台,打包后给谁使用
    sourcemap:true, //可以调试源代码
    format:format, // 输出格式 cjs esm iife(立即执行函数)
    globalName:pkg.buildOptions?.name 
 }).then((ctx)=>{
    console.log(`${target} ${format} build success`);

    return ctx.watch(); //持续打包
 });